package com.shun.base.service.impl;

import cn.hutool.core.util.IdUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.shun.base.dto.SysLoginLogAddDto;
import com.shun.base.dto.SysLoginLogDto;
import com.shun.base.mapper.SysLoginLogMapper;
import com.shun.base.service.ISysLoginLogService;
import com.shun.base.vo.SysLoginLog;
import com.shun.common.R;
import com.shun.common.utils.ShunCommonUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * <p>
 * 系统访问记录 服务实现类
 * </p>
 *
 * @author clever
 * @since 2021-10-10
 */
@Slf4j
@Service
public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements ISysLoginLogService {

    @Autowired
    private SysLoginLogMapper logMapper;

    private final static String ERR_ADD_LOGIN = "新增登录日志异常！";

    private final static String ERR_DEL_LOGIN = "删除登录日志异常！";

    @Override
    public R addSysLoginLog(SysLoginLogAddDto dto) {
        log.debug("新增登录日志,参数:{}",dto);
        SysLoginLog loginLog = ShunCommonUtils.beanMap(dto,SysLoginLog.class);
        loginLog.setInfoId(IdUtil.objectId());
        return save(loginLog)?R.suc():R.error(ERR_ADD_LOGIN);
    }

    @Override
    public R pageSysLoginLog(SysLoginLogDto dto) {
        log.debug("分页登录日志,参数:{}",dto);
        IPage<SysLoginLog> sysLoginLogIPage = new LambdaQueryChainWrapper<>(this.logMapper).page(dto.toPage());
        log.debug("data:{}", JSONUtil.toJsonPrettyStr(R.suc(sysLoginLogIPage)));
        return R.suc(sysLoginLogIPage);
    }

    @Override
    public R delSysLoginLog(String logId) {
        log.debug("删除登录日志,参数:{}",logId);
        return removeById(logId)?R.suc():R.error(ERR_DEL_LOGIN);
    }

    @Override
    public R delSysLoginLogs(String[] logIds) {
        log.debug("批量删除，logIds:{}",logIds.length);
        List<Integer> ids = Stream.of(logIds).map(s -> Integer.parseInt(s)).collect(Collectors.toList());
        logMapper.delByLogIds(ids);
        return R.suc();
    }
}
